//package cn.bugstack.infrastructure.repositroy;
//
//import cn.bugstack.infrastructure.comm.WeightedRandomSelector;
//import cn.bugstack.infrastructure.dao.IStrategyAwardDao;
//import cn.bugstack.infrastructure.dao.po.StrategyAward;
//import cn.bugstack.infrastructure.redis.IRedisService;
//import cn.bugstack.strategy.model.entity.StrategyAwardEntity;
//import cn.bugstack.strategy.model.entity.StrategyEntity;
//import cn.bugstack.strategy.model.entity.StrategyRuleEntity;
//import cn.bugstack.strategy.repositroy.IStrategyRepositroy;
//import cn.bugstack.types.common.Constants;
//import org.springframework.stereotype.Repository;
//
//import javax.annotation.Resource;
//import java.math.BigDecimal;
//import java.util.ArrayList;
//import java.util.HashMap;
//import java.util.List;
//
///**
// * 策略仓储实现，基础层依赖领域层，interface位于基础层，实现位于领域层
// */
//public class StrategyRepositroy_copy implements IStrategyRepositroy {
//
//	@Resource
//	private IStrategyAwardDao strategyAwardDao;
//	@Resource
//	private IRedisService redisService;
//	public List<StrategyAwardEntity> queryStrategyAwardList(Long strategyId) {
//
//		// 优先从缓存获取，定义缓存key
//		String cacheKey = Constants.RedisKey.STRATEGY_AWARD_LIST_KEY+strategyId;
//		// 根据缓存key获取数据，并反序列化为List<StrategyAwardEntity>对象
//		List<StrategyAwardEntity> strategyAwardEntities = redisService.getValue(cacheKey);
//		// 否则从库中获取数据
//		if (null != strategyAwardEntities && !strategyAwardEntities.isEmpty()) return strategyAwardEntities;
//		//指定一个新的初始容量为集合大小，避免ArrayList频繁扩容
//		List<StrategyAward> strategyAwards = strategyAwardDao.queryStrategyAwardListByStrategyId(strategyId);
//		strategyAwardEntities = new ArrayList<>(strategyAwards.size());
//		for (StrategyAward strategyAward : strategyAwards){
//			StrategyAwardEntity strategyAwardEntity = StrategyAwardEntity.builder()
//					.strategyId(strategyAward.getStrategyId())
//					.awardId(strategyAward.getAwardId())
//					.awardTitle(strategyAward.getAwardTitle())
//					.awardSubtitle(strategyAward.getAwardSubtitle())
//					.awardCount(strategyAward.getAwardCount())
//					.awardCountSurplus(strategyAward.getAwardCountSurplus())
//					.awardRate(strategyAward.getAwardRate())
//					.sort(strategyAward.getSort())
//					.ruleModels(strategyAward.getRuleModels())
//					.build();
//			strategyAwardEntities.add(strategyAwardEntity);
//		}
//		//把从数据库中获取到的数据缓存起来
//		redisService.setValue(cacheKey,strategyAwardEntities);
//		return strategyAwardEntities;
//	}
//
//	@Override
//	public void storeStrategyAwardSearchRateTables(String key, Integer rateRange, HashMap<Integer, Integer> shuffleStrategyAwardSearchRateTables) {
//
//	}
//
//	@Override
//	public void storeStrategyAwardSearchRateTables(Long strategyId, Integer rateRange, HashMap<Integer, Integer> shuffleStrategyAwardSearchRateTables) {
//
//	}
//
//	@Override
//	public int getRateRange(Long strategyId) {
//		return 0;
//	}
//
//	@Override
//	public int getRateRange(String strategyId) {
//		return 0;
//	}
//
//	@Override
//	public Integer getStrategyAwardAssemble(String key, Integer ratekey) {
//		return 0;
//	}
//
//	@Override
//	public StrategyEntity queryStrategyEntityByStrategyId(Long strategyId) {
//		return null;
//	}
//
//	@Override
//	public StrategyRuleEntity queryStrategyRules(Long strategyId, String ruleModel) {
//		return null;
//	}
//
//	@Override
//	public String queryStrategyRuleValue(Long strategyId, Integer awardId, String ruleModel) {
//		return "";
//	}
//
//	@Override
//	public Integer getStrategyAwardAssemble(Long strategyId, int ratekey) {
//		return 0;
//	}
//
//
//}
